package br.ufu.wcm.controller;

import java.util.List;

import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.ufu.wcm.dao.FornecedorDao;
import br.ufu.wcm.model.Fornecedor;
import br.ufu.wcm.model.Produto;

@Resource
public class FornecedorController {
	
	private FornecedorDao fornecedorDao;
	private Result result;
	
	public FornecedorController(FornecedorDao fornecedorDao, Result result) {
		this.fornecedorDao = fornecedorDao;
		this.result = result; 
	}
	
	public void formulario(){
	}
	
	@Get @Path("/fornecedor")
	public List<Fornecedor> lista() {
		return fornecedorDao.buscarTodos();
	}
	
	@Path("/fornecedor/atualiza/{fornecedor.codigo}")
	public void atualiza(Fornecedor fornecedor) {
		Fornecedor fornecedorBanco = fornecedorDao.get(fornecedor.getCodigo());
		result.include("fornecedor", fornecedorBanco);
		result.redirectTo(FornecedorController.class).formulario();
	}
	
	@Post("/fornecedor")
	public void salvar(Fornecedor fornecedor) {
		fornecedorDao.salvar(fornecedor);
		result.redirectTo(FornecedorController.class).lista();
	}
	
	@Put("/fornecedor")
	public void atualizar(Fornecedor fornecedor) {
		fornecedorDao.atualizar(fornecedor);
		result.redirectTo(FornecedorController.class).lista();
	}
	
	@Path("/fornecedor/remove/{fornecedor.codigo}")
	public void remover(Fornecedor fornecedor) {
		fornecedorDao.remover(fornecedor);
		result.redirectTo(FornecedorController.class).lista();
	}
	
	@Path("/fornecedor/pesquisa")
	public List<Fornecedor> buscarFornecedorPorProduto(Produto produto) {
		return fornecedorDao.buscarFornecedorPorProduto(produto);
	}
	
}
